#ifdef HERZELEID_DESKTOP
 #if _MSC_VER
  #pragma once
 #endif

 #ifndef __HERZELEID_POINTERUPDATEKIND_INCLUDED__
  #define __HERZELEID_POINTERUPDATEKIND_INCLUDED__
  #include "HerzeleidUIInput.hxx"

// Specifies the types of pointer updates that are supported by an application.
HerzeleidUIInputNamespaceBegin enum class PointerUpdateKind 
{
	Other = 0x00,							// Pointer updates not identified by other PointerUpdateKind values.
	LeftButtonPressed = BitMask(0),			// Left button pressed.
	LeftButtonReleased = BitMask(1),		// Left button released.
	RightButtonPressed = BitMask(2),		// Right button pressed.
	RightButtonReleased = BitMask(3),		// Right button released.
	MiddleButtonPressed = BitMask(4),		// Middle button pressed.
	MiddleButtonReleased = BitMask(5),		// Middle button released.
	XButton1Pressed = BitMask(6),			// XBUTTON1 pressed.
	XButton1Released = BitMask(7),			// XBUTTON1 released.
	XButton2Pressed = BitMask(8),			// XBUTTON2 pressed.
	XButton2Released = BitMask(9),			// XBUTTON2 released.

} HerzeleidUIInputNamespaceEnd; 

HerzeleidUIInputNamespaceBegin
	TinyTypeDecl( PointerUpdateKind ); // Specifies the types of pointer updates that are supported by an application.

	inline PointerUpdateKind const &operator |=( 
		_Inout_ PointerUpdateKind &eThisItem, 
		_In_ PointerUpdateKind const & eOtherItem 
		)
	{
		eThisItem = (PointerUpdateKind)((UInt32)eThisItem|(UInt32)eOtherItem);
		return( eThisItem );
	}

	inline BoolConst operator &(
		_Inout_ PointerUpdateKindConstRef eThisItem, 
		_In_ PointerUpdateKindConstRef eOtherItem 
		)
	{
		return( ((UInt32)(eThisItem) & (UInt32)(eOtherItem)) > 0 );
	}
HerzeleidUIInputNamespaceEnd

 #endif // !HERZELEID_POINTERUPDATEKIND_INCLUDED__
#endif // !HERZELEID_DESKTOP
